import arrow

class DateUtils(object):
    @staticmethod
    def get_today_start():
        now = arrow.utcnow().to("local")
        return now.floor("day")

    @staticmethod
    def get_today_end():
        now = arrow.utcnow().to("local")
        return now.ceil("day")

    @staticmethod
    def get_today_start_end():
        return DateUtils.get_today_start(), DateUtils.get_today_end()

    @staticmethod
    def get_week_start():
        now = arrow.utcnow().to("local")
        return now.floor("week")

    @staticmethod
    def get_week_end():
        now = arrow.utcnow().to("local")
        return now.ceil("week")

    @staticmethod
    def get_week_start_end():
        return DateUtils.get_week_start(), DateUtils.get_week_end()

    @staticmethod
    def get_month_start():
        now = arrow.utcnow().to("local")
        return now.floor("month")

    @staticmethod
    def get_month_end():
        now = arrow.utcnow().to("local")
        return now.ceil("month")

    @staticmethod
    def get_month_start_end():
        return DateUtils.get_month_start(), DateUtils.get_month_end()

    @staticmethod
    def get_quarter_start():
        now = arrow.utcnow().to("local")
        return now.floor("quarter")

    @staticmethod
    def get_quarter_end():
        now = arrow.utcnow().to("local")
        return now.ceil("quarter")

    @staticmethod
    def get_quarter_start_end():
        return DateUtils.get_quarter_start(), DateUtils.get_quarter_end()

    @staticmethod
    def get_year_start():
        now = arrow.utcnow().to("local")
        return now.floor("year")

    @staticmethod
    def get_year_end():
        now = arrow.utcnow().to("local")
        return now.ceil("year")

    @staticmethod
    def get_year_start_end():
        return DateUtils.get_year_start(), DateUtils.get_year_end()